package model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import domein.Gebruiker;

public class GebruikersIO extends DbAbstract {

	public GebruikersIO() {
		super();
	}

	/*
	 * AddGebruiker voor normale gebruiker met telefoonnummer en wachtwoord Geen
	 * hashing/salting/security wordt nog gebruikt. Wordt plain text opgeslagen
	 * 
	 * @author rwijhe
	 */

	public void AddGebruikerUsr(Gebruiker g) {

		String email = g.getEmail();
		String voornaam = g.getVoornaam();
		String achternaam = g.getAchternaam();
		String bedrijf = g.getBedrijf();
		String telefoonnummer = g.getTelefoonnummer();
		String wachtwoord = g.getWachtwoord();

		String query = "INSERT INTO gebruiker (email, voornaam, achternaam, bedrijf, telefoonnummer, wachtwoord)";
		query += "VALUES('" + email + "', '" + voornaam + "', '" + achternaam
				+ "', '" + bedrijf + "', '" + telefoonnummer + "', '"
				+ wachtwoord + "')";

		try {
			super.addUpdateRecord(query);
			super.closeConnectRst();

		} catch (Exception e) {

		}
	}

	/*
	 * AddGebruiker voor normale gebruiker zonder wachtwoord
	 * 
	 * @author rwijhe
	 */
	public ArrayList<Gebruiker> SearchListGebruikers(String value) {
		ArrayList<Gebruiker> gList = new ArrayList<Gebruiker>();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("select * from gebruiker where voornaam like '%"+value+"%'OR achternaam like '%"+value+"%'");
			while(rs.next()){
				String email = rs.getString("email"); 
				String voornaam = rs.getString("voornaam");
				String achternaam = rs.getString("achternaam"); 
				String bedrijf = rs.getString("bedrijf");
				String telefoonnummer = rs.getString("telefoonnummer");
				
				Gebruiker g = new Gebruiker(email, voornaam, achternaam, bedrijf, telefoonnummer);
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst evenementen ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList; 
	}
	public void AddGebruiker(Gebruiker g) {
		String email = g.getEmail();
		// System.out.println(g.getEmail());
		String voornaam = g.getVoornaam();
		String achternaam = g.getAchternaam();
		String bedrijf = g.getBedrijf();
		String telefoonnummer = g.getTelefoonnummer();
		String query = "INSERT INTO gebruiker (email, voornaam, achternaam, bedrijf, telefoonnummer, wachtwoord)";
		query += "VALUES('" + email + "', '" + voornaam + "', '" + achternaam
				+ "', '" + bedrijf + "', '" + telefoonnummer + "', 'NULL')";
		super.addUpdateRecord(query);
		try {
			super.addUpdateRecord(query);
			super.closeConnectRst();

		} catch (Exception e) {

		}
	}

	/*
	 * deleteGebruiker voor het verwijderen van een user in de database.
	 * 
	 * @author rwijhe
	 */
	public void deleteGebruiker(String email) {
		String query = "DELETE FROM 'gebruiker' WHERE email=" + email + "";
		super.addUpdateRecord(query);
	}

	/*
	 * veranderen van data van een gebruiker met wachtwoord
	 * 
	 * @author rwijhe
	 */
	public void changePassGebruiker(String email, String voornaam,
			String achternaam, String bedrijf, String telefoonnummer, String ww) {

		String query = "UPDATE `gebruiker` SET `email` = " + email
				+ ",`voornaam` = " + voornaam + ",	`achternaam` = "
				+ achternaam + "," + "`bedrijf` = " + bedrijf
				+ ",`telefoonnummer` = " + telefoonnummer + ",`wachtwoord` = "
				+ ww + "  WHERE email=" + email + "";

		super.addUpdateRecord(query);

	}

	/*
	 * veranderen van data van een gebruiker met wachtwoord
	 * 
	 * @author rwijhe
	 */
	public void changeGebruiker(String email, String voornaam,
			String achternaam, String bedrijf, String telefoonnummer) {

		String query = "UPDATE `gebruiker` SET `email` = " + email
				+ ",`voornaam` = " + voornaam + ",	`achternaam` = "
				+ achternaam + "," + "`bedrijf` = " + bedrijf
				+ ",`telefoonnummer` = " + telefoonnummer
				+ ",`wachtwoord` = NULL  WHERE email=" + email + "";

		super.addUpdateRecord(query);

	}

	/*
	 * login functionaliteit Geen hashing/salting/security wordt nog gebruikt.
	 * Wordt plain text uitgelezen
	 * 
	 * @author kevinwtenweerde
	 */

	public boolean Login(String mail, String wachtwoord) {
		boolean b = false;
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("SELECT * FROM gebruiker");
			while (rs.next()) {
				String mailCheck = (rs.getString("email"));
				// System.out.println(mail);
				// System.out.println(mailCheck);
				if (mail.equals(mailCheck)) {
					String wwCheck = (rs.getString("wachtwoord"));
					if (wachtwoord.equals(wwCheck)) {
						b = true;
					}
				}
			}

		} catch (Exception e) {

		}
		super.closeConnectRst();
		return b;
	}
	
	/*
	 * 
	 * Lijst ophalen van gebruikers in de database
	 * @author kevinwtenweerde
	 * 
	 */
	
	public ArrayList<Gebruiker> listGebruikers() {
		ArrayList<Gebruiker> gList = new ArrayList<Gebruiker>();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("SELECT * FROM gebruiker");
			while(rs.next()){
				String email = rs.getString("email");
				String voornaam = rs.getString("voornaam");
				String achternaam  = rs.getString("achternaam");
				String bedrijf = rs.getString("bedrijf");
				String telefoonnummer = rs.getString("telefoonnummer");
				String wachtwoord = rs.getString("wachtwoord");
				Gebruiker g = new Gebruiker(email, voornaam, achternaam, bedrijf, telefoonnummer, wachtwoord);
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst gebruikers ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList; 
	}

}